import { createI18n } from 'vue-i18n';
import { list } from '@/api/locale';
import { Message } from '@arco-design/web-vue';

export const LOCALE_OPTIONS = [
  { label: '中文', value: 'zh-CN' },
  { label: 'English', value: 'en-US' },
];

const messages = {
  'zh-CN': {}, // 初始化为空，稍后动态加载
  'en-US': {},
};

const defaultLocale = localStorage.getItem('arco-locale') || 'zh-CN';

const i18n = createI18n({
  legacy: false, // 使用 Composition API
  locale: defaultLocale, // 默认语言
  fallbackLocale: 'en-US', // 回退语言
  allowComposition: true,
  messages,
});

export type Locale = 'zh-CN' | 'en-US';

/**
 * 异步获取并设置国际化消息
 * @param locale 当前语言环境
 */
export async function initializeI18n(): Promise<void> {
  try {
    const response = await list(defaultLocale);
    if (response.code === 200) {
      const message = response.data;
      i18n.global.setLocaleMessage(defaultLocale, message);
      i18n.global.locale.value = defaultLocale as Locale;
    } else {
      Message.error(`获取国际化数据失败: ${response.message}`);
      // 设置默认语言或回退语言
      i18n.global.locale.value = 'zh-CN';
    }
  } catch {
    Message.error('初始化国际化时发生错误');
    // 设置默认语言或回退语言
    i18n.global.locale.value = 'zh-CN';
  }
}

export default i18n;
